package com.conan.anno;

import com.conan.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

@Documented//元注解，标识当前注解将来可以被抽取到帮助文档中
@Target({ElementType.FIELD})//元注解，标识当前注解将来可以用在哪些地方：类、属性(FIELD)、方法、参数
@Retention(RetentionPolicy.RUNTIME)//元注解，标识当前注解保留到哪个阶段：源码阶段、编译阶段、运行阶段
@Constraint(validatedBy = {StateValidation.class})//指定为该注解提供校验规则的类
public @interface State {
    //提供校验失败后的提示信息
    String message() default "state参数的值只能是已发布或者草稿";

    //指定分组
    Class<?>[] groups() default {};

    //负载，用于获取当前注解的附加信息
    //虽然该属性是必须的，但一般用不到，所以可以先不关注
    Class<? extends Payload>[] payload() default {};
}
